package com.yaxin.outsourcing.domain.bo;

import com.yaxin.common.core.domain.BaseEntity;
import com.yaxin.common.core.validate.AddGroup;
import com.yaxin.common.core.validate.EditGroup;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.*;

import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;

/**
 * 临时通行证申请单业务对象 access_application
 *
 * @author yaxin
 * @date 2025-08-07
 */

@Data
@EqualsAndHashCode(callSuper = true)
public class AccessApplicationBo extends BaseEntity {

    /**
     * 申请单ID
     */
    @NotNull(message = "申请单ID不能为空", groups = { EditGroup.class })
    private Long id;

    /**
     * 申请单号
     */
    @NotBlank(message = "申请单号不能为空", groups = { AddGroup.class, EditGroup.class })
    private String appNo;

    /**
     * 申请单位ID
     */
    @NotNull(message = "申请单位ID不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long appUid;

    /**
     * 申请单位名称
     */
    @NotBlank(message = "申请单位名称不能为空", groups = { AddGroup.class, EditGroup.class })
    private String appUnit;

    /**
     * 申请人
     */
    @NotBlank(message = "申请人不能为空", groups = { AddGroup.class, EditGroup.class })
    private String appPerson;

    /**
     * 进厂人数
     */
    @NotNull(message = "进厂人数不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long entryCount;

    /**
     * 外协负责人
     */
    @NotBlank(message = "外协负责人不能为空", groups = { AddGroup.class, EditGroup.class })
    private String outContact;

    /**
     * 工作内容
     */
    @NotBlank(message = "工作内容不能为空", groups = { AddGroup.class, EditGroup.class })
    private String content;

    /**
     * 申请日期
     */
    @NotNull(message = "申请日期不能为空", groups = { AddGroup.class, EditGroup.class })
    private Date appDate;

    /**
     * 外协单位ID
     */
    @NotNull(message = "外协单位ID不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long outUid;

    /**
     * 外协单位名称
     */
    @NotBlank(message = "外协单位名称不能为空", groups = { AddGroup.class, EditGroup.class })
    private String outUnit;

    /**
     * 工作区域
     */
    @NotBlank(message = "工作区域不能为空", groups = { AddGroup.class, EditGroup.class })
    private String area;

    /**
     * 外协负责人联系方式
     */
    @NotBlank(message = "外协负责人联系方式不能为空", groups = { AddGroup.class, EditGroup.class })
    private String outPhone;

    /**
     * 状态
     */
    @NotNull(message = "状态不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long status;

    /**
     *
     */
    @NotBlank(message = "不能为空", groups = { AddGroup.class, EditGroup.class })
    private String updataBy;

    /**
     *
     */
    @NotBlank(message = "不能为空", groups = { AddGroup.class, EditGroup.class })
    private String remark;


}
